/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.tida.servir.entities;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.*;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;

/**
 *
 * @author Jurguen Zambrano
 */
@Entity
@Table(name = "RSC_PERFIL")
@NamedQueries({
    @NamedQuery(name = "Perfil.findAll", query = "SELECT p FROM Perfil p"),
    @NamedQuery(name = "Perfil.findById", query = "SELECT p FROM Perfil p WHERE p.id = :id"),
    @NamedQuery(name = "Perfil.findByDescperfil", query = "SELECT p FROM Perfil p WHERE p.descperfil = :descperfil"),
    @NamedQuery(name = "Perfil.findByFechacreacion", query = "SELECT p FROM Perfil p WHERE p.fechacreacion = :fechacreacion")})
@NamedNativeQueries({
    @NamedNativeQuery(name = "callSpPerfilSinAsignarPorUsuario",
    query = "CALL SP_PERFILSINASIGNARPORUSUARIO(?,:in_usuario_id)",
    resultClass = Perfil.class,
    hints = {
        @QueryHint(name = "org.hibernate.callable", value = "true")
    })
})
public class Perfil implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MYENTITY_SEQ")
    @SequenceGenerator(name = "MYENTITY_SEQ", sequenceName = "RSC_PERFIL_ID_SEQ", allocationSize = 1)
    @Column(name = "ID")
    private long id;
    @Column(name = "DESCPERFIL")
    private String descperfil;
    @Basic(optional = false)
    @Column(name = "FECHACREACION")
    @Temporal(TemporalType.DATE)
    private Date fechacreacion;
    @Column(name = "ESTADO")
    private Boolean estado;
    @JoinTable(name = "RSC_PERFILUSUARIO", joinColumns = {
        @JoinColumn(name = "PERFIL_ID", referencedColumnName = "ID")}, inverseJoinColumns = {
        @JoinColumn(name = "USUARIO_ID", referencedColumnName = "ID")})
    @ManyToMany
    private Collection<Usuario> usuarioCollection;
    @JoinTable(name = "RSC_MENUPERFIL", joinColumns = {
        @JoinColumn(name = "PERFIL_ID", referencedColumnName = "ID")}, inverseJoinColumns = {
        @JoinColumn(name = "MENU_ID", referencedColumnName = "ID")})
    @ManyToMany
    private Collection<Menu> menuCollection;

    private Boolean accesoVigente;
    private Boolean accesoNoVigente;
    private Boolean accesoHistorico;
    private Boolean accesoAnulada;
    private Boolean accesoSuspendida;
    @Column(name="FORMATO_EXPORTACION")
    private Boolean modoExportacion;
    private Boolean accesoEliminada;

    private Boolean accionEliminar;
    private Boolean accionEditar;
    private Boolean accionImprimir;
    private Boolean accionAnular;

    public Boolean getAccionEliminar() {
        return accionEliminar;
    }

    public void setAccionEliminar(Boolean accionEliminar) {
        this.accionEliminar = accionEliminar;
    }

    public Boolean getAccionEditar() {
        return accionEditar;
    }

    public void setAccionEditar(Boolean accionEditar) {
        this.accionEditar = accionEditar;
    }

    public Boolean getAccionImprimir() {
        return accionImprimir;
    }

    public void setAccionImprimir(Boolean accionImprimir) {
        this.accionImprimir = accionImprimir;
    }

    public Boolean getAccionAnular() {
        return accionAnular;
    }

    public void setAccionAnular(Boolean accionAnular) {
        this.accionAnular = accionAnular;
    }
      
    public Boolean getAccesoEliminada() {
        return accesoEliminada;
    }

    public void setAccesoEliminada(Boolean accesoEliminada) {
        this.accesoEliminada = accesoEliminada;
    }
    

    public Boolean getModoExportacion() {
        return modoExportacion;
    }

    public void setModoExportacion(Boolean modoExportacion) {
        this.modoExportacion = modoExportacion;
    }
    
    public Boolean getAccesoVigente() {
        return accesoVigente;
    }

    public void setAccesoVigente(Boolean accesoVigente) {
        this.accesoVigente = accesoVigente;
    }

    public Boolean getAccesoNoVigente() {
        return accesoNoVigente;
    }

    public void setAccesoNoVigente(Boolean accesoNoVigente) {
        this.accesoNoVigente = accesoNoVigente;
    }

    public Boolean getAccesoHistorico() {
        return accesoHistorico;
    }

    public void setAccesoHistorico(Boolean accesoHistorico) {
        this.accesoHistorico = accesoHistorico;
    }

    public Boolean getAccesoAnulada() {
        return accesoAnulada;
    }

    public void setAccesoAnulada(Boolean accesoAnulada) {
        this.accesoAnulada = accesoAnulada;
    }

    public Boolean getAccesoSuspendida() {
        return accesoSuspendida;
    }

    public void setAccesoSuspendida(Boolean accesoSuspendida) {
        this.accesoSuspendida = accesoSuspendida;
    }
    
    
    public Perfil() {
    }

    public Perfil(long id) {
        this.id = id;
    }

    public Perfil(long id, Date fechacreacion) {
        this.id = id;
        this.fechacreacion = fechacreacion;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getDescperfil() {
        return descperfil;
    }

    public void setDescperfil(String descperfil) {
        this.descperfil = descperfil;
    }

    @Override
    public String toString() {
        return "com.tida.servir.entities.Perfil[ id=" + id + " ]";
    }

//    public List<Menuperfil> getMenuperfilList() {
//        return menuperfilList;
//    }
//
//    public void setMenuperfilList(List<Menuperfil> menuperfilList) {
//        this.menuperfilList = menuperfilList;
//    }
    public Date getFechacreacion() {
        return fechacreacion;
    }

    public void setFechacreacion(Date fechacreacion) {
        this.fechacreacion = fechacreacion;
    }

    public Collection<Usuario> getUsuarioCollection() {
        return usuarioCollection;
    }

    public void setUsuarioCollection(Collection<Usuario> usuarioCollection) {
        this.usuarioCollection = usuarioCollection;
    }

    public Collection<Menu> getMenuCollection() {
        return menuCollection;
    }

    public void setMenuCollection(Collection<Menu> menuCollection) {
        this.menuCollection = menuCollection;
    }

    public Boolean getEstado() {
        return estado;
    }

    public void setEstado(Boolean estado) {
        this.estado = estado;
    }
}